// 给定两个大小分别为 m 和 n 的正序（从小到大）数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。

#include<bits/stdc++.h>
#include<string>
#include<vector>
#include<unordered_set>
#include<unordered_map>
#include<set>
#include<queue>
#include<stack>
using namespace std;

// 使用STL的sort

// 执行用时：
// 32 ms
// , 在所有 C++ 提交中击败了
// 74.93%
// 的用户
// 内存消耗：
// 87.2 MB
// , 在所有 C++ 提交中击败了
// 33.21%
// 的用户

class Solution {
public:
    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
        int len1=nums1.size();
        int len2=nums2.size();
        double res = 1.0;
        if(len1==0&&len2==0){
            return 0.0;
        }
        else if(len1==0){
            int temp = len2%2;
            int mid = len2/2;
            if(temp==1){
                return nums2[mid]/res;
            }
            else{
                return (nums2[mid-1]+nums2[mid])/2.0;
            }
        }
        else if(len2==0){
            int temp = len1%2;
            int mid = len1/2;
            if(temp==1){
                return nums1[mid]/res;
            }
            else{
                return (nums1[mid-1]+nums1[mid])/2.0;
            }
        }
        else{
            if(len1<len2){
                for(int i=0;i<len1;i++){
                    nums2.insert(nums2.end(),nums1[i]);
                }
                sort(nums2.begin(),nums2.end());
                int len=len1+len2;
                int temp = len%2;
                int mid = len/2;
                if(temp==1){
                    return nums2[mid]/res;
                }
                else{
                    return (nums2[mid-1]+nums2[mid])/2.0;
                }
            }
            else{
                for(int i=0;i<len2;i++){
                    nums1.insert(nums1.end(),nums2[i]);
                }
                sort(nums1.begin(),nums1.end());
                int len=len1+len2;
                int temp = len%2;
                int mid = len/2;
                if(temp==1){
                    return nums1[mid]/res;
                }
                else{
                    return (nums1[mid-1]+nums1[mid])/2.0;
                }
            }
        }

    }
};